package com.springStudy.aspect.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.ComponentScan;

/**
 * 定义切面
 */
@Aspect
@ComponentScan
public class AopLog {

//    execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)
    /*
execution()	表达式的主体
第一个“*”符号	表示返回值的类型任意
com.loongshawn.method.ces	AOP所切的服务的包名，即，需要进行横切的业务类
包名后面的“..”	表示当前包及子包
第二个“*”	表示类名，*即所有类
.*(..)	表示任何方法名，括号表示参数，两个点表示任何参数类型
     */
    @Pointcut("execution(* com.springStudy.aspect.aop.service..*(..))")
    public void aspectPoint() {
    }

    @Before("aspectPoint()")
    public void doBefore(){
        System.out.println("---------------->Before is run");
    }

    @After("aspectPoint()")
    public void doAfter(){
        System.out.println("---------------->Before is run");
    }
}
